1. Field of the Invention
The present invention relates to a computer device, and in particular relates to a device for controlling peripherals by means of a software application executed on a multi-task capable computer system.
2. Description of the Related Art
In current multi-task capable systems, applications have access to a specific peripheral through software known as the peripheral driver. The peripheral driver generally offers a operating system a generic or abstract view of a given peripheral.
On the one hand, by providing an abstract peripheral driver, the design, development and information-carrying ability of a software application is simplified. Furthermore, the communications between several applications and the peripheral are centralised and co-ordinated by the peripheral driver, making it possible to share a peripheral between several applications, while preserving the integrity of the system.
Using an abstract peripheral driver, however, causes a major handicap in a system where a high performance level is necessary. Specifically, the applications cannot entirely exploit the particular capacities of the peripherals, since the applications must conform to the protocol for communication with the driver. The applications cannot communicate directly with the peripheral interface.
In order to attempt to resolve these problems, several isolated solutions have been proposed.
First of all the direct memory access (DMA) mechanism is known, for the transfer of data between the central memory and a given peripheral without the intervention of the central processing unit (CPU).
DMA allows an application to specify the address of a buffer block and the implied size in the next command.
However, on the one hand, fairly generally, the current peripherals can use an address only in physical form (not in virtual form) and, on the other hand, in a multi-application system, the operating system sets up a virtual memory management unit (in order to switch more easily between the memory spaces of the applications.
Because of this, in a standard multi-application system, each request involving a direct memory access (DMA) mechanism therefore passes through the operating system (OS) in order to convert the virtual addresses supplied by the application into physical addresses which can be understood by the peripheral involved. The operating system is once again used.
A method, described in U.S. Pat. No. 5,659,798 (“Method and system for initiating and loading DMA controller registers by using user-level programs”, Blumrich) adds a few functions to the operating system and an associated hardware mechanism in order to avoid the operating system in programming by DMA. It uses in particular an address decoding module inserted on the bus system, and a particular initialization of the virtual space of each application. The application can then directly supply the physical addresses and the sizes of the buffers, while guaranteeing the integrity of the system.
This method for preventing access to the operating system is however limited to the programming of the DMA mechanism, and in no way makes it possible to access the programming of the whole of the interface of a peripheral.
The I2O protocol method has also been utilized, which uses a specific input/output processor (IOP), placed between the central memory and the peripherals, to relieve the CPU of the processing of the interrupts during high-throughput processing.
In this protocol, a software driver is developed which is common to an entire class of peripherals (for example all the network interfaces), specific to an operating system. Each peripheral manufacturer in this class then develops a specific software driver which will be executed on the IOP.
There is then found a reduction in the processing of the tasks specific to a particular class of peripherals by the operating system. However, this is achieved at the cost of an increase in the level of abstraction of the access to the peripherals by the applications (with commands controlling a single driver common to an entire class of peripherals).